package com.pianzhu.blockchainemr.pojo;

import lombok.Data;
import java.util.*;
import java.time.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;

/**
 * 检查检验报告表
 * 对应数据库表: emr_exam_reports
 * 数据库: blockchain_emr
 * 自动生成 - 请勿手动修改
 */
@Data
public class EmrExamReports {

    /**
     * 
     * 字段类型: bigint
     */
    private long reportId;

    /**
     * 就诊ID
     * 字段类型: varchar
     */
    private String visitId;

    /**
     * 检验/影像/病理
     * 字段类型: enum
     */
    private String reportType;

    /**
     * 报告名称
     * 字段类型: varchar
     */
    private String reportName;

    /**
     * 项目编码
     * 字段类型: varchar
     */
    private String itemCode;

    /**
     * 结构化结果
     * 字段类型: json
     */
    private String resultItems;

    /**
     * 报告结论
     * 字段类型: text
     */
    private String conclusion;

    /**
     * 报告医生
     * 字段类型: bigint
     */
    private Long reporterId;

    /**
     * 报告时间
     * 字段类型: datetime
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.time.LocalDateTime reportTime;

    /**
     * 审核医生
     * 字段类型: bigint
     */
    private Long verifyDoctorId;

    /**
     * 审核时间
     * 字段类型: datetime
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.time.LocalDateTime verifyTime;

    /**
     * 影像文件OSS地址
     * 字段类型: varchar
     */
    private String ossUrl;

    /**
     * 
     * 字段类型: datetime
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.time.LocalDateTime createdTime;

    /**
     * 将JSON字符串解析为Object对象
     * 用于处理数据库中的JSON字段: result_items
     */
    public static Object parseResultItems(String json) {
        if (json == null || json.trim().isEmpty()) {
            return null;
        }
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.readValue(json, new TypeReference<Object>(){});
        } catch (IOException e) {
            throw new RuntimeException("解析JSON字段 result_items 失败: " + json, e);
        }
    }

    /**
     * 将Object对象序列化为JSON字符串
     * 用于存储到数据库JSON字段: result_items
     */
    public static String serializeResultItems(Object obj) {
        if (obj == null) {
            return null;
        }
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.writeValueAsString(obj);
        } catch (IOException e) {
            throw new RuntimeException("序列化JSON字段 result_items 失败", e);
        }
    }

}
